// 1
import Vue from 'vue'
// 2
import VueRouter from 'vue-router'

import Company from '../views/Company'
import Find from '../views/Find'
import My from '../views/My'
import Question from '../views/Question'
import CompanyDetail from '../views/CompanyDetail'
import login from '../views/login'
import UserInfo from '../views/UserInfo'

import store from '@/store/index.js'
import { getToken, deleteToken } from '@/utils/local.js'
import { getuserinfo } from '@/api/user.js'
import { Toast } from 'vant'

Vue.use(Toast)
// 3
Vue.use(VueRouter)
// 4
const routes = [
  {
    path: '/',
    redirect: '/login'
  },
  {
    path: '/login',
    component: login
  },
  {
    path: '/Company',
    component: Company,
    meta: {
      showTabbar: true
    }
  },
  {
    path: '/Question',
    component: Question,
    meta: {
      showTabbar: true
    }
  },
  {
    path: '/Find',
    component: Find,
    meta: {
      showTabbar: true
    }
  },
  {
    path: '/My',
    component: My,
    meta: {
      showTabbar: true,
      needLogin: true
    }
  },
  {
    path: '/CompanyDetail',
    component: CompanyDetail
  },
  {
    path: '/login',
    component: login
  },
  {
    path: '/UserInfo',
    component: UserInfo,
    meta: {
      needLogin: true
    }
  }
]
// 5

const router = new VueRouter({
  routes
})
// 导航守卫
// 限制1是否需要登录
// 2是否获取的到token
// 1异步代码
router.beforeEach((to, from, next) => {
  window.console.log('to', to)

  // 是否需要登录
  if (to.meta.needLogin) {
    // 是否已登录
    if (store.state.ISLOGIN) {
      next()
    } else {
      // 是否能获取token
      if (getToken()) {
        // 用户信息
        getuserinfo()
          .then(res => {
            window.console.log(res)
            // 保存用户信息加优化图片路径
            res.data.avatar = process.env.VUE_APP_URL + res.data.avatar
            store.commit('SETUSERINFO', res.data)
            // 登录状态
            store.commit('SETLOGIN', true)
            next()
          })
          .catch(() => {
            // 删掉token
            deleteToken()
            // 提示加跳转
            Toast.fail('请先登录')
            next(`/login?redirect=${to.fullPath}`)
          })
        // token存在，但没有用户信息
      } else {
        // 没有token和用户信息，打回
        // 提示，跳转
        Toast.fail('请先登录')
        next(`/login?redirect=${to.fullPath}`)
      }
    }
  } else {
    next()
  }
})
// router.beforeEach(async (to, from, next) => {
//   // 是否需要登录
//   if (to.meta.needLogin) {
//     // 是否需要用户信息，不存在
//     if (!store.state.userInfo) {
//       //  不存在token值
//       if (!getToken()) {
//         // 提示登录
//         Toast('请登录')
//         // 跳转,,最重要拿到当前的地址
//         next(`/login?redirect=${to.fullPath}`)
//       } else {
//         // 存在token
//         // 弹出加载框
//         Toast.loading({
//           duration: 0,
//           // 禁止点击
//           forbidclick: true
//         })
//         // 获取用户信息
//         try {
//           const res = await submitdata()
//           // 头像处理
//           res.data.avatar = process.env.VUE_APP_URL + res.data.avatar
//           // 保存信息
//           store.commit('SETUSERINFO', res.data)
//           // 关闭弹出框
//           Toast.clear()
//           next()
//         } catch (error) {
//           // 失败即token 超时或有问题
//           // 提示
//           Toast.fail('请重试')
//           // 移出旧token
//           deleteToken()
//           // 跳转到登录页面，保留原地址
//           next(`/login?redirect=${to.fullPath}`)
//         }
//       }
//     } else {
//       // 要登录，有用户信息
//       next()
//     }
//   } else {
//     // 没有用户信息并不需要登录
//     next()
//   }
// })
export default router
